﻿//$.widget('ui.smartbox', {
//    _create: function () {
//        var t = this, w = t.widget();

//        var opt = {
//            serviceurl: $(w).attr("serviceUrl"),
//            lookupType: $(w).attr("lookupType"),
//            minlength: $(w).attr("minLength"),
//            cacheLength: $(w).attr("cacheLength"),
//            delayDuration: $(w).attr("delayDuration"),
//            langID: $(w).attr("langID")
//        };

//        $(w).autocomplete({
//            source: opt.serviceurl + "?lookupType=" + opt.lookupType + "&langID=" + opt.langID,
//            minLength: opt.minlength,
//            cacheLength: opt.cacheLength,
//            delay: opt.delayDuration
//        });
//    }
//});


// istanilerse böylede yazılabilir
//parametreler jquery ile gönderilebilir.

// $('selector').smartbox({
//    serviceurl:'serviceurl'
//    lookupType:'lookupType'
//    minlength:'minlength'
//  });

$.fn.smartbox = function (options) {
    var w = this;

    //default değerleri attributelerden okuyor
    var defaults = {
        serviceurl: $(w).attr("serviceUrl"),
        lookupType: $(w).attr("lookupType"),
        minlength: $(w).attr("minLength"),
        cacheLength: $(w).attr("cacheLength"),
        delayDuration: $(w).attr("delayDuration"),
        langID: $(w).attr("langID")
    };

    var empty = {};

    //attributelerden gelen değerlerle metoddan gelen parametreleri birleştirir. 
    //metoddan gelen parametreler attributeden okunan değerleri ezer.
    var opt = $.extend(empty, defaults, options);
    var name = $(w).attr("name");
    var hidden = $("<input name='" + name + "' type='hidden'/>");
    hidden.insertAfter(w);
    $(w).attr("name", name + "_text");
    $(w).autocomplete({
        source: opt.serviceurl + "?lookupType=" + opt.lookupType + "&langID=" + opt.langID,
        minLength: opt.minlength,
        cacheLength: opt.cacheLength,
        delay: opt.delayDuration,
        select: function (event, ui) {
            hidden.val(ui.item.Value);
        }
    });
};

